
from .update_data_sub import *
import os,shutil

#目前有tushare的积分权限，后续全部使用Tushare的数据api。
#更新市场数据的功能：保证每次都是自动的更新，能够适应市场中不断上市、退市的实际情况。
#每次更新时，先获取更新的日期，与MarketProfile数据库中的交易日期进行比对，得到更新数据的间隔。
TDX_BLOCK_PATH = 'D:/new_tdx/T0002/hq_cache/'
LOCAL_BLOCK_PATH = './ycdata/blockfile/'

def init_market_data():
    print("begin to init market data...")
    init_market_data_cur_date_oneshot_1()
    init_block_stock_file_info_2()


#统一规定：交易日使用字符串。其他K线、分时、实时数据都是用datetime，保存到数据库使用datetimefield.
def update_market_data():
    print("begin to update market data ...")

    # init_block_stock_file_info_2()
    #3.更新市场交易日期。每次都重新更新，序号0对应最新日期，依次为1,2...等交易日。这个函数必须放在最前面，后面所有数据的更新都依赖。
    update_market_trade_date_1()
    #4.更新市场分析的股票列表（正常股票列表，黑名单列表），并更新日K线数据（其从max(上市开始日期,2013-01-04）至当前日期的日K线数据）
    update_stock_profile_kdata_day_2()#开始使用Market_data_cur_date中的最新日期来更新数据
    #5.更新市场信息，包括市场涨跌，K线，以及涨跌停数量等。
    update_market_profile_3()
   
    #6更新板块日K线及其他统计信息  #板块信息，主要还是用block_profile_main数据表。只包括245个概念和110个细分行业。（20230605）
    update_block_kdata_day_4()
    #7统计市场中涨停股票信息。同时更新板块中的涨停数目。主要基于3，补充4和6。
    update_market_zt_stastic_5()

    print("ok")

    return 

    
#### 通达信软件中的文件目录：TDX_BLOCK_PATH = 'D:/new_tdx/T0002/hq_cache/'
#### 后台服务读取的文件目录：LOCAL_BLOCK_PATH = './ycdata/blockfile/'
#文件包括：block_fg.dat block_gn.dat block_zs.dat，blockhy.cfg，tdxzs3.cfg

def update_block_file():
    #先对比当前目录下的文件和tdx软件中的文件信息，如果时间上更新了，文件大小改变了，那么就自动拷贝相应文件
    filenameList= ['block_fg.dat','block_gn.dat','block_zs.dat','tdxhy.cfg','tdxzs3.cfg']
    updatefile_list = []
    #先拷贝文件，只有数据更新了才拷贝。比如文件大小改变了，并且tdx文件的修改时间要大于本地文件的修改时间
    for filename in filenameList:
        filepath_tdx = os.path.join(TDX_BLOCK_PATH,filename)
        print('filepath_tdx = ',filepath_tdx)
        filepath_local = os.path.join(LOCAL_BLOCK_PATH,filename)
        if os.path.exists(filepath_tdx):
            filesize_tdx = os.path.getsize(filepath_tdx)
            file_mtime_tdx = os.path.getmtime(filepath_tdx)
        else:
            return 
        if os.path.exists(filepath_local):
            filesize_local = os.path.getsize(filepath_local)
            file_mtime_local = os.path.getmtime(filepath_local)
        
        if filesize_local != filesize_tdx and file_mtime_tdx > file_mtime_local:
            print('filesize_local = ' ,filesize_local)
            print('file_mtime_tdx = ' ,file_mtime_tdx)
            shutil.copy(filepath_tdx,LOCAL_BLOCK_PATH)
            updatefile_list.append(filepath_local)

    update_block_stock_file()
    print("updatefile_list = ",updatefile_list)
    # html = "<html><body>板块文件更新完毕！更新文件列表如下：</body></html>" 
    return 